import * as Cesium from "cesium";
import { MeasureDistance } from "./measureDistance";
import { MeasureArea } from "./measureArea";
import { MeasurePoint } from "./measurePoint";

export function init() {
  // 初始化Cesium
  const viewer = new Cesium.Viewer("cesiumContainer", {
    // 是否显示查询按钮
    geocoder: false,
    // 不显示home按钮
    homeButton: false,
    sceneModePicker: false,
    baseLayerPicker: false,
    navigationHelpButton: false,
    animation: false,
    // creditContainer: "credit",
    timeline: false,
    fullscreenButton: false,
    vrButton: false,
    // 天空盒设置
    // skyBox: new Cesium.SkyBox({
    //   sources: {
    //     positiveX: "stars/TychoSkymapII.t3_08192x04096_80_px.jpg",
    //     negativeX: "stars/TychoSkymapII.t3_08192x04096_80_mx.jpg",
    //     positiveY: "stars/TychoSkymapII.t3_08192x04096_80_py.jpg",
    //     negativeY: "stars/TychoSkymapII.t3_08192x04096_80_my.jpg",
    //     positiveZ: "stars/TychoSkymapII.t3_08192x04096_80_pz.jpg",
    //     negativeZ: "stars/TychoSkymapII.t3_08192x04096_80_mz.jpg",
    //   },
    // }),
  });
  MeasureArea(viewer);
  // // 角度转弧度
  // const radians = Cesium.Math.toRadians(90)
  // // 弧度转角度
  // const degress = Cesium.Math.toDegrees(2 * Math.PI)

  // // 将经纬度转笛卡尔坐标
  // const cartesian3 = Cesium.Cartesian3.fromDegrees(
  //   // 经度
  //   89.5,
  //   // 维度
  //   20.4,
  //   // 高度
  //   100
  // );
  // console.log(cartesian3);

  // // 将笛卡尔坐标转换为经纬度
  // const cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
  // console.log(cartographic);

  // //   天安门的位置
  //   const position = Cesium.Cartesian3.fromDegrees(116.39, 39.9, 1000);
  //   // 瞬间到达指定的位置
  //   viewer.camera.setView({
  //     destination: position,
  //     orientation: {
  //       // 指定相机的朝向
  //       heading: Cesium.Math.toRadians(0),
  //       // 指定相机的俯视角,0度镜头朝下,90度镜头朝上
  //       pitch: Cesium.Math.toRadians(-45),
  //       // 指定相机的滚转角
  //       roll: 0,
  //     },
  //   });
  // 飞往指定的位置
  //   viewer.camera.flyTo({
  //     destination: position,
  //     orientation: {
  //       // 指定相机的朝向
  //       heading: Cesium.Math.toRadians(0),
  //       // 指定相机的俯视角,0度镜头朝下,90度镜头朝上
  //       pitch: Cesium.Math.toRadians(-45),
  //       // 指定相机的滚转角
  //       roll: 0,
  //     },
  //   });

  // 相机向前移动10米,可以监听事件
  document.addEventListener("keydown", (e) => {
    console.log(e);
    //  获取相机离地面的高度
    const height = viewer.camera.positionCartographic.height;
    const moveRate = height / 10;
    if (e.key === "w") {
      // 前进
      viewer.camera.moveForward(moveRate);
    } else if (e.key === "s") {
      // 后退
      viewer.camera.moveBackward(moveRate);
    } else if (e.key === "a") {
      // 向左
      viewer.camera.moveLeft(moveRate);
    } else if (e.key === "d") {
      // 向右
      viewer.camera.moveRight(moveRate);
    } else if (e.key === "q") {
      // 绕y轴向左旋转
      viewer.camera.lookLeft(Cesium.Math.toRadians(0.1));
    } else if (e.key === "e") {
      // 绕y轴向右旋转
      viewer.camera.lookRight(Cesium.Math.toRadians(0.1));
    } else if (e.key === "r") {
      // 绕x轴向上旋转
      viewer.camera.lookUp(Cesium.Math.toRadians(0.1));
    } else if (e.key === "f") {
      // 绕x轴向下旋转
      viewer.camera.lookDown(Cesium.Math.toRadians(0.1));
    } else if (e.key === "g") {
      // 绕Z轴向左逆时针旋转
      viewer.camera.twistLeft(Cesium.Math.toRadians(0.1));
    } else if (e.key === "h") {
      // 绕Z轴向左顺时针旋转
      viewer.camera.twistRight(Cesium.Math.toRadians(0.1));
    }
  });

  // 添加物体与3d建筑
  //   广州塔的位置
  const position2 = Cesium.Cartesian3.fromDegrees(113.3191, 23.109, 1000);
  // 瞬间到达指定的位置
  viewer.camera.setView({
    destination: position2,
    orientation: {
      // 指定相机的朝向
      heading: Cesium.Math.toRadians(0),
      // 指定相机的俯视角,0度镜头朝下,90度镜头朝上
      pitch: Cesium.Math.toRadians(-90),
      // 指定相机的滚转角
      roll: 0,
    },
  });
}
